package com.weishu.installment.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;

/**
 *
 * @TableName t_cf_contract
 */
@TableName(value ="t_cf_contract")
@Data
public class CfContract implements Serializable {
    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    @TableField(exist = false)
    private Integer pageSize;
    @TableField(exist = false)
    private Integer pageNum;
    /**
     * 出房合同编号（系统生成）
     */
    private String cfContractNo;

    /**
     * 外部合同编号（线下合同编号）
     */
    private String outContractNo;

    /**
     * 上一合同ID，续约合同的时候
     */
    private Long lastContractId;

    /**
     * 上一合同编号
     */
    private String lastContractNo;

    /**
     * 商户ID
     */
    private Long businessId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门编号
     */
    private String deptNo;

    /**
     * 房源ID
     */
    private String roomId;

    /**
     * 房源编号
     */
    private String roomCode;

    /**
     * 承租房间(使用房源名称)
     */
    private String roomName;

    /**
     * 收房合同ID（没有收房合同可以录入出房合同）
     */
    private Long sfContractId;

    /**
     * 收房合同编号（没有收房合同可以录入出房合同）
     */
    private String sfContractNo;

    /**
     * 房产编号
     */
    private String houseId;

    /**
     * 房产信息(考虑在房产表中增加house_name，楼栋，单元，门牌号和居室，然后带出)
     */
    private String houseName;

    /**
     * 小区名(使用楼盘名称)
     */
    private String premiseName;

    /**
     * 居住人数(出房的时候录入)
     */
    private Integer peopleNum;

    /**
     * 租客ID
     */
    private Long tenantId;

    /**
     * 租客姓名
     */
    private String tenantName;

    /**
     * 租客手机号
     */
    private String tenantPhone;

    /**
     * 租客紧急联系号
     */
    private String tenantEmergencyPhone;

    /**
     * 租客证件号
     */
    private String tenantCardNo;

    /**
     * 租客联系地址
     */
    private String tenantContactAddress;

    /**
     * 租约期限开始日
     */
    private Date startDate;

    /**
     * 租约期限结束日
     */
    private Date endDate;

    /**
     * 租约期限（月）,直接选择租约期限的时候，没有选，暂时不设定
     */
    private Date signingCycle;

    /**
     * 承租月租金
     */
    private BigDecimal monthRent;

    /**
     * 押金
     */
    private BigDecimal deposit;

    /**
     * 收款方式(押X付Y的X)
     */
    private Integer depositType;

    /**
     * 收款方式（押X付Y的Y）
     */
    private Integer paymentType;

    /**
     * 房租收取设置提前天数,天
     */
    private Integer advanceDays;

    /**
     * 房租收取设置固定日, 号（自然月）
     */
    private Integer fixedDay;

    /**
     * 租客承担付费(款项),各款项逗号拼接保存
     */
    private String tenantExpenses;

    /**
     * 承租类型,"0:整租（分散式）
1:合租（分散式）
2:单身公寓（集中式）"
     */
    private Integer signType;

    /**
     * 补充条款
     */
    private String supplementaryTerms;

    /**
     * 有无特殊人群,0:无 1:有
     */
    private Integer haveSpecialPeople;

    /**
     * 是否房租分期,0:否 1:是
     */
    private Integer rentInstallmentFlg;

    /**
     * 是否租约保理,0:否 1:是
     */
    private Integer zyblFlg;

    /**
     * 合同状态,"1:草稿
2:已提交
3:已解约
4:已结束
9:作废"
     */
    private Integer contractState;

    /**
     * 续约状态,"0: 未续约
1: 已续约"
     */
    private Integer xuyueState;

    /**
     * 冻结状态：0未冻结 1已冻结
     */
    private Integer freezeStatus;

    /**
     * 合同录入日期,暂定设置为提交日期
     */
    private Date inputDate;

    /**
     * 合同签订日期, 暂定设置为提交日期
     */
    private Date signingDate;

    /**
     * 合同审核日期,暂定设置为提交日期
     */
    private Date auditDate;

    /**
     * 合同录入人,暂定设置为创建人
     */
    private Long inputUserId;

    /**
     * 出房人,暂定设置为创建人
     */
    private Long cfUserId;

    /**
     * 出房人姓名
     */
    private String cfUserName;

    /**
     * 预留字段1
     */
    private BigDecimal reserve1;

    /**
     * 预留字段2
     */
    private Integer reserve2;

    /**
     * 预留字段3
     */
    private String reserve3;

    /**
     * 预留字段4
     */
    private String reserve4;

    /**
     * 预留字段5
     */
    private String reserve5;

    /**
     * 删除标识,0:未删除，1:删除
     */
    private Integer delFlg;

    /**
     * 创建用户ID
     */
    private Long createUserid;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新用户ID
     */
    private Long updateUserid;

    /**
     * 更新时间
     */
    private Date updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        CfContract other = (CfContract) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getCfContractNo() == null ? other.getCfContractNo() == null : this.getCfContractNo().equals(other.getCfContractNo()))
            && (this.getOutContractNo() == null ? other.getOutContractNo() == null : this.getOutContractNo().equals(other.getOutContractNo()))
            && (this.getLastContractId() == null ? other.getLastContractId() == null : this.getLastContractId().equals(other.getLastContractId()))
            && (this.getLastContractNo() == null ? other.getLastContractNo() == null : this.getLastContractNo().equals(other.getLastContractNo()))
            && (this.getBusinessId() == null ? other.getBusinessId() == null : this.getBusinessId().equals(other.getBusinessId()))
            && (this.getDeptId() == null ? other.getDeptId() == null : this.getDeptId().equals(other.getDeptId()))
            && (this.getDeptNo() == null ? other.getDeptNo() == null : this.getDeptNo().equals(other.getDeptNo()))
            && (this.getRoomId() == null ? other.getRoomId() == null : this.getRoomId().equals(other.getRoomId()))
            && (this.getRoomCode() == null ? other.getRoomCode() == null : this.getRoomCode().equals(other.getRoomCode()))
            && (this.getRoomName() == null ? other.getRoomName() == null : this.getRoomName().equals(other.getRoomName()))
            && (this.getSfContractId() == null ? other.getSfContractId() == null : this.getSfContractId().equals(other.getSfContractId()))
            && (this.getSfContractNo() == null ? other.getSfContractNo() == null : this.getSfContractNo().equals(other.getSfContractNo()))
            && (this.getHouseId() == null ? other.getHouseId() == null : this.getHouseId().equals(other.getHouseId()))
            && (this.getHouseName() == null ? other.getHouseName() == null : this.getHouseName().equals(other.getHouseName()))
            && (this.getPremiseName() == null ? other.getPremiseName() == null : this.getPremiseName().equals(other.getPremiseName()))
            && (this.getPeopleNum() == null ? other.getPeopleNum() == null : this.getPeopleNum().equals(other.getPeopleNum()))
            && (this.getTenantId() == null ? other.getTenantId() == null : this.getTenantId().equals(other.getTenantId()))
            && (this.getTenantName() == null ? other.getTenantName() == null : this.getTenantName().equals(other.getTenantName()))
            && (this.getTenantPhone() == null ? other.getTenantPhone() == null : this.getTenantPhone().equals(other.getTenantPhone()))
            && (this.getTenantEmergencyPhone() == null ? other.getTenantEmergencyPhone() == null : this.getTenantEmergencyPhone().equals(other.getTenantEmergencyPhone()))
            && (this.getTenantCardNo() == null ? other.getTenantCardNo() == null : this.getTenantCardNo().equals(other.getTenantCardNo()))
            && (this.getTenantContactAddress() == null ? other.getTenantContactAddress() == null : this.getTenantContactAddress().equals(other.getTenantContactAddress()))
            && (this.getStartDate() == null ? other.getStartDate() == null : this.getStartDate().equals(other.getStartDate()))
            && (this.getEndDate() == null ? other.getEndDate() == null : this.getEndDate().equals(other.getEndDate()))
            && (this.getSigningCycle() == null ? other.getSigningCycle() == null : this.getSigningCycle().equals(other.getSigningCycle()))
            && (this.getMonthRent() == null ? other.getMonthRent() == null : this.getMonthRent().equals(other.getMonthRent()))
            && (this.getDeposit() == null ? other.getDeposit() == null : this.getDeposit().equals(other.getDeposit()))
            && (this.getDepositType() == null ? other.getDepositType() == null : this.getDepositType().equals(other.getDepositType()))
            && (this.getPaymentType() == null ? other.getPaymentType() == null : this.getPaymentType().equals(other.getPaymentType()))
            && (this.getAdvanceDays() == null ? other.getAdvanceDays() == null : this.getAdvanceDays().equals(other.getAdvanceDays()))
            && (this.getFixedDay() == null ? other.getFixedDay() == null : this.getFixedDay().equals(other.getFixedDay()))
            && (this.getTenantExpenses() == null ? other.getTenantExpenses() == null : this.getTenantExpenses().equals(other.getTenantExpenses()))
            && (this.getSignType() == null ? other.getSignType() == null : this.getSignType().equals(other.getSignType()))
            && (this.getSupplementaryTerms() == null ? other.getSupplementaryTerms() == null : this.getSupplementaryTerms().equals(other.getSupplementaryTerms()))
            && (this.getHaveSpecialPeople() == null ? other.getHaveSpecialPeople() == null : this.getHaveSpecialPeople().equals(other.getHaveSpecialPeople()))
            && (this.getRentInstallmentFlg() == null ? other.getRentInstallmentFlg() == null : this.getRentInstallmentFlg().equals(other.getRentInstallmentFlg()))
            && (this.getZyblFlg() == null ? other.getZyblFlg() == null : this.getZyblFlg().equals(other.getZyblFlg()))
            && (this.getContractState() == null ? other.getContractState() == null : this.getContractState().equals(other.getContractState()))
            && (this.getXuyueState() == null ? other.getXuyueState() == null : this.getXuyueState().equals(other.getXuyueState()))
            && (this.getFreezeStatus() == null ? other.getFreezeStatus() == null : this.getFreezeStatus().equals(other.getFreezeStatus()))
            && (this.getInputDate() == null ? other.getInputDate() == null : this.getInputDate().equals(other.getInputDate()))
            && (this.getSigningDate() == null ? other.getSigningDate() == null : this.getSigningDate().equals(other.getSigningDate()))
            && (this.getAuditDate() == null ? other.getAuditDate() == null : this.getAuditDate().equals(other.getAuditDate()))
            && (this.getInputUserId() == null ? other.getInputUserId() == null : this.getInputUserId().equals(other.getInputUserId()))
            && (this.getCfUserId() == null ? other.getCfUserId() == null : this.getCfUserId().equals(other.getCfUserId()))
            && (this.getCfUserName() == null ? other.getCfUserName() == null : this.getCfUserName().equals(other.getCfUserName()))
            && (this.getReserve1() == null ? other.getReserve1() == null : this.getReserve1().equals(other.getReserve1()))
            && (this.getReserve2() == null ? other.getReserve2() == null : this.getReserve2().equals(other.getReserve2()))
            && (this.getReserve3() == null ? other.getReserve3() == null : this.getReserve3().equals(other.getReserve3()))
            && (this.getReserve4() == null ? other.getReserve4() == null : this.getReserve4().equals(other.getReserve4()))
            && (this.getReserve5() == null ? other.getReserve5() == null : this.getReserve5().equals(other.getReserve5()))
            && (this.getDelFlg() == null ? other.getDelFlg() == null : this.getDelFlg().equals(other.getDelFlg()))
            && (this.getCreateUserid() == null ? other.getCreateUserid() == null : this.getCreateUserid().equals(other.getCreateUserid()))
            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
            && (this.getUpdateUserid() == null ? other.getUpdateUserid() == null : this.getUpdateUserid().equals(other.getUpdateUserid()))
            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getCfContractNo() == null) ? 0 : getCfContractNo().hashCode());
        result = prime * result + ((getOutContractNo() == null) ? 0 : getOutContractNo().hashCode());
        result = prime * result + ((getLastContractId() == null) ? 0 : getLastContractId().hashCode());
        result = prime * result + ((getLastContractNo() == null) ? 0 : getLastContractNo().hashCode());
        result = prime * result + ((getBusinessId() == null) ? 0 : getBusinessId().hashCode());
        result = prime * result + ((getDeptId() == null) ? 0 : getDeptId().hashCode());
        result = prime * result + ((getDeptNo() == null) ? 0 : getDeptNo().hashCode());
        result = prime * result + ((getRoomId() == null) ? 0 : getRoomId().hashCode());
        result = prime * result + ((getRoomCode() == null) ? 0 : getRoomCode().hashCode());
        result = prime * result + ((getRoomName() == null) ? 0 : getRoomName().hashCode());
        result = prime * result + ((getSfContractId() == null) ? 0 : getSfContractId().hashCode());
        result = prime * result + ((getSfContractNo() == null) ? 0 : getSfContractNo().hashCode());
        result = prime * result + ((getHouseId() == null) ? 0 : getHouseId().hashCode());
        result = prime * result + ((getHouseName() == null) ? 0 : getHouseName().hashCode());
        result = prime * result + ((getPremiseName() == null) ? 0 : getPremiseName().hashCode());
        result = prime * result + ((getPeopleNum() == null) ? 0 : getPeopleNum().hashCode());
        result = prime * result + ((getTenantId() == null) ? 0 : getTenantId().hashCode());
        result = prime * result + ((getTenantName() == null) ? 0 : getTenantName().hashCode());
        result = prime * result + ((getTenantPhone() == null) ? 0 : getTenantPhone().hashCode());
        result = prime * result + ((getTenantEmergencyPhone() == null) ? 0 : getTenantEmergencyPhone().hashCode());
        result = prime * result + ((getTenantCardNo() == null) ? 0 : getTenantCardNo().hashCode());
        result = prime * result + ((getTenantContactAddress() == null) ? 0 : getTenantContactAddress().hashCode());
        result = prime * result + ((getStartDate() == null) ? 0 : getStartDate().hashCode());
        result = prime * result + ((getEndDate() == null) ? 0 : getEndDate().hashCode());
        result = prime * result + ((getSigningCycle() == null) ? 0 : getSigningCycle().hashCode());
        result = prime * result + ((getMonthRent() == null) ? 0 : getMonthRent().hashCode());
        result = prime * result + ((getDeposit() == null) ? 0 : getDeposit().hashCode());
        result = prime * result + ((getDepositType() == null) ? 0 : getDepositType().hashCode());
        result = prime * result + ((getPaymentType() == null) ? 0 : getPaymentType().hashCode());
        result = prime * result + ((getAdvanceDays() == null) ? 0 : getAdvanceDays().hashCode());
        result = prime * result + ((getFixedDay() == null) ? 0 : getFixedDay().hashCode());
        result = prime * result + ((getTenantExpenses() == null) ? 0 : getTenantExpenses().hashCode());
        result = prime * result + ((getSignType() == null) ? 0 : getSignType().hashCode());
        result = prime * result + ((getSupplementaryTerms() == null) ? 0 : getSupplementaryTerms().hashCode());
        result = prime * result + ((getHaveSpecialPeople() == null) ? 0 : getHaveSpecialPeople().hashCode());
        result = prime * result + ((getRentInstallmentFlg() == null) ? 0 : getRentInstallmentFlg().hashCode());
        result = prime * result + ((getZyblFlg() == null) ? 0 : getZyblFlg().hashCode());
        result = prime * result + ((getContractState() == null) ? 0 : getContractState().hashCode());
        result = prime * result + ((getXuyueState() == null) ? 0 : getXuyueState().hashCode());
        result = prime * result + ((getFreezeStatus() == null) ? 0 : getFreezeStatus().hashCode());
        result = prime * result + ((getInputDate() == null) ? 0 : getInputDate().hashCode());
        result = prime * result + ((getSigningDate() == null) ? 0 : getSigningDate().hashCode());
        result = prime * result + ((getAuditDate() == null) ? 0 : getAuditDate().hashCode());
        result = prime * result + ((getInputUserId() == null) ? 0 : getInputUserId().hashCode());
        result = prime * result + ((getCfUserId() == null) ? 0 : getCfUserId().hashCode());
        result = prime * result + ((getCfUserName() == null) ? 0 : getCfUserName().hashCode());
        result = prime * result + ((getReserve1() == null) ? 0 : getReserve1().hashCode());
        result = prime * result + ((getReserve2() == null) ? 0 : getReserve2().hashCode());
        result = prime * result + ((getReserve3() == null) ? 0 : getReserve3().hashCode());
        result = prime * result + ((getReserve4() == null) ? 0 : getReserve4().hashCode());
        result = prime * result + ((getReserve5() == null) ? 0 : getReserve5().hashCode());
        result = prime * result + ((getDelFlg() == null) ? 0 : getDelFlg().hashCode());
        result = prime * result + ((getCreateUserid() == null) ? 0 : getCreateUserid().hashCode());
        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        result = prime * result + ((getUpdateUserid() == null) ? 0 : getUpdateUserid().hashCode());
        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", cfContractNo=").append(cfContractNo);
        sb.append(", outContractNo=").append(outContractNo);
        sb.append(", lastContractId=").append(lastContractId);
        sb.append(", lastContractNo=").append(lastContractNo);
        sb.append(", businessId=").append(businessId);
        sb.append(", deptId=").append(deptId);
        sb.append(", deptNo=").append(deptNo);
        sb.append(", roomId=").append(roomId);
        sb.append(", roomCode=").append(roomCode);
        sb.append(", roomName=").append(roomName);
        sb.append(", sfContractId=").append(sfContractId);
        sb.append(", sfContractNo=").append(sfContractNo);
        sb.append(", houseId=").append(houseId);
        sb.append(", houseName=").append(houseName);
        sb.append(", premiseName=").append(premiseName);
        sb.append(", peopleNum=").append(peopleNum);
        sb.append(", tenantId=").append(tenantId);
        sb.append(", tenantName=").append(tenantName);
        sb.append(", tenantPhone=").append(tenantPhone);
        sb.append(", tenantEmergencyPhone=").append(tenantEmergencyPhone);
        sb.append(", tenantCardNo=").append(tenantCardNo);
        sb.append(", tenantContactAddress=").append(tenantContactAddress);
        sb.append(", startDate=").append(startDate);
        sb.append(", endDate=").append(endDate);
        sb.append(", signingCycle=").append(signingCycle);
        sb.append(", monthRent=").append(monthRent);
        sb.append(", deposit=").append(deposit);
        sb.append(", depositType=").append(depositType);
        sb.append(", paymentType=").append(paymentType);
        sb.append(", advanceDays=").append(advanceDays);
        sb.append(", fixedDay=").append(fixedDay);
        sb.append(", tenantExpenses=").append(tenantExpenses);
        sb.append(", signType=").append(signType);
        sb.append(", supplementaryTerms=").append(supplementaryTerms);
        sb.append(", haveSpecialPeople=").append(haveSpecialPeople);
        sb.append(", rentInstallmentFlg=").append(rentInstallmentFlg);
        sb.append(", zyblFlg=").append(zyblFlg);
        sb.append(", contractState=").append(contractState);
        sb.append(", xuyueState=").append(xuyueState);
        sb.append(", freezeStatus=").append(freezeStatus);
        sb.append(", inputDate=").append(inputDate);
        sb.append(", signingDate=").append(signingDate);
        sb.append(", auditDate=").append(auditDate);
        sb.append(", inputUserId=").append(inputUserId);
        sb.append(", cfUserId=").append(cfUserId);
        sb.append(", cfUserName=").append(cfUserName);
        sb.append(", reserve1=").append(reserve1);
        sb.append(", reserve2=").append(reserve2);
        sb.append(", reserve3=").append(reserve3);
        sb.append(", reserve4=").append(reserve4);
        sb.append(", reserve5=").append(reserve5);
        sb.append(", delFlg=").append(delFlg);
        sb.append(", createUserid=").append(createUserid);
        sb.append(", createTime=").append(createTime);
        sb.append(", updateUserid=").append(updateUserid);
        sb.append(", updateTime=").append(updateTime);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}
